home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Ebooks / Thinking in C++ V2 / C23 / Basexcpt.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-25  |  670 b   |  31 lines

  1. //: C23:Basexcpt.cpp
  2. // From Thinking in C++, 2nd Edition
  3. // Available at http://www.BruceEckel.com
  4. // (c) Bruce Eckel 1999
  5. // Copyright notice in Copyright.txt
  6. // Exception hierarchies
  7. #include <iostream>
  8. using namespace std;
  9.  
  10. class X {
  11. public:
  12.   class Trouble {};
  13.   class Small : public Trouble {};
  14.   class Big : public Trouble {};
  15.   void f() { throw Big(); }
  16. };
  17.  
  18. int main() {
  19.   X x;
  20.   try {
  21.     x.f();
  22.   } catch(X::Trouble) {
  23.     cout << "caught Trouble" << endl;
  24.   // Hidden by previous handler:
  25.   } catch(X::Small) {
  26.     cout << "caught Small Trouble" << endl;
  27.   } catch(X::Big) {
  28.     cout << "caught Big Trouble" << endl;
  29.   }
  30. } ///:~
  31.